package main.util;

import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

/**
 * 分页封装类 
 * @author wfy
 *
 */
public class PageableTool {

	/**
     * 获取基础分页对象
     * @param page 获取第几页
     * @param pageSize 每页条数
     * @param dtos 排序对象数组
     * @return
     */
	public static Pageable basicPage(Integer page,Integer pageSize,SortDto...dtos) {
		
		Sort sort = SortTool.basicSort(dtos);
		page = (page==null || page<0)?0:page;
		pageSize = (pageSize==null || pageSize<=0)?10:pageSize;
		Pageable pageable = new PageRequest(page,pageSize,sort);
		
		return pageable;
	}
	
	 /**
     * 获取基础分页对象，每页条数默认10条
     *  - 默认以id降序排序
     * @param page 获取第几页
     * @return
     */
    public static Pageable basicPage(Integer page) {
        return basicPage(page, 0, new SortDto("desc", "id"));
    }
	
    /**
     * 获取基础分页对象，排序方式默认降序
     * @param page 获取第几页
     * @param pageSize 每页条数
     * @param orderField 排序字段
     * @return
     */
    public static Pageable basicPage(Integer page, Integer pageSize, String orderField) {
        return basicPage(page, pageSize, new SortDto("desc", orderField));
    }

    /**
     * 获取基础分页对象
     *  - 每页条数默认10条
     *  - 排序方式默认降序
     * @param page 获取第几页
     * @param orderField 排序字段
     * @return
     */
    public static Pageable basicPage(Integer page, String orderField) {
        return basicPage(page, 0, new SortDto("desc", orderField));
    }
}
